<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>原型</title>
	</head>
	<body>
	</body>
	<script>
		//构造函数
		/*
		function Box(user,age){
			this.name = user; //实例属性
			this.age = age;
			this.run = function(){  //实例方法
				return this.name+this.age+"运行中...";
			};
		}; 
		*/
		//原型
		
		/*//构造函数体内什么都没有，这里如果有，叫做实例属性，实例方法
		function Box(){}
		Box.prototype.name = 'Che'   //原型属性
		Box.prototype.age = 24   //原型属性
		Box.prototype.run = function(){		//原型方法
			return this.name+this.age+'运行中....';
		};
		var box1 = new Box();
		alert( box1.name);
		alert( box1.run());*/
		
		/*
		
		1 如果是实例方法,不同的实例化它们的方法地址是不一样的,是唯一的
		2 如果是原型方法,那么他们的地址是共享的,大家都是一样的
		
		原型模式的执行流程
		1 先查找构造函数实例里的属性或方法,如果有,立即返回
		2 如果构造函数实例里没有,则去他的原型对象里找,如果有,就返回
		
		*/
		/*function Box(){}
		//使用字面量的方式创建原型对象，这里的{}就是对象，是Object，new Object就相当于{}
		Box.prototype = {
			name:'Che',
			age:100,
			run:function(){
				return this.name+this.age+'运行中...';
			}
		}
		var box = new Box();
		alert(box.run());*/
		
		//内置引用类型的功能扩展
		String.prototype.addstring = function(){
			return this+',被添加了！！';
		};
		alert("Che".addstring());
	</script>
</html>
